package day0401;

import java.util.Scanner;



public class TanChiShe23 {
    /**
     * 23.贪吃蛇
     * 完成贪吃蛇游戏的模拟：
     * 给定一个NM的数组arr，代表NM个方格组成的版图，贪吃蛇每次移动一个方格。若ar[i][j]=='H'，表示该方可为贪吃蛇的起始
     * 位置;若ar[i][j]=='F'，表示该方格为食物，若ar[i][j]=='E'，表示该方格为空格。
     * 贪吃蛇初始长度为1，初始移动方向为向左。输入为给定一系列贪吃蛇的移动操作，返回操作后蛇的长度，
     * 如果在操作执行完之前已经游戏结束，返回游戏结束时贪吃蛇的长度。
     * <p>
     * <p>
     * 输入描述: 输入第 1行为空格分隔的字母，代表贪吃蛇的移动操作。字母取值为 U、D、L、R、G，其中U、D、L、R分别表示贪吃蛇往上、下、左、右转向，
     * 转向时贪吃蛇不移动，G表示贪吃蛇按当前的方向移动一格。用例保证输入的操作正确。
     * 第 2行为空格分隔的两个数，指定为 N和 M，为数组的行和列数。余下 N行每行是空格分 隔的 M个字母。字母取值为 H、F和 E，H表示贪吃蛇的起始位置，
     * F表示食物，E表示该 方格为空。用例保证有且只有一个 H，而 F和 E会有多个。
     * 输出描述:
     * 输出一个数字为蛇的长度。
     * 示 例:
     * 输入
     * D G G
     * 3 3
     * F F F
     * F F H
     * E F E
     * 输出
     * 1
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] direction = sc.nextLine().split(" ");
        int n = sc.nextInt();
        int m = sc.nextInt();
        sc.nextLine();
        // 组装数据
        String[][] arr = new String[n][m];
        // H的开始位置坐标
        int[] xy = new int[2];
        // 贪吃蛇长度
        int result = 1;
        // 记录下贪吃蛇走过的每个位置
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            String[] strings = sc.nextLine().split(" ");
            for (int j = 0; j < m; j++) {
                arr[i][j] = strings[j];
                // 初始位置
                if ("H".equals(arr[i][j])) {
                    xy[0] = i;
                    xy[1] = j;
                    arr[i][j] = "E";
                }
            }
        }
        for (int i = 0; i < direction.length; i++) {
            if ("G".equals(direction[i])) {
                sb.append(xy[0]).append(" ").append(xy[1]).append(",");
                if (i == 0) {
                    xy[0]--;
                } else {
                    int a = xy[0];
                    int b = xy[1];
                    for (int j = i - 1; j >= 0; j--) {
                        if ("U".equals(direction[j])) {
                            xy[0]--;
                            break;
                        }
                        if ("D".equals(direction[j])) {
                            xy[0]++;
                            break;
                        }
                        if ("L".equals(direction[j])) {
                            xy[1]--;
                            break;
                        }
                        if ("R".equals(direction[j])) {
                            xy[1]++;
                            break;
                        }
                    }
                    if (xy[0] == a && xy[1] == b) {
                        xy[0]--;
                    }
                }

                String[] split = sb.substring(0, sb.toString().length()).split(",");
                StringBuilder ss = new StringBuilder();
                for (int j = split.length - 1; j >= split.length - result; j--) {
                    ss.append(split[j]).append(",");
                }
                if (xy[0] < 0 || xy[0] >= m || xy[1] < 0 || xy[1] >= n || ss.toString().contains(xy[0] + " " + xy[1])) {
                    System.out.println(result);
                    return;
                }

                if ("F".equals(arr[xy[0]][xy[1]])) {
                    result++;
                }
                arr[xy[0]][xy[1]] = "E";
            }


        }
        System.out.println(result);

    }
}
